#include <stdio.h>

/* MAC表项结构 */
typedef struct tagL2IF_FDB_ENTRY_S
{
    UCHAR     aucMacAddr[MAC_LENGTH];        /* MAC地址 */        
    USHORT    usVlanId;             /* MAC地址所属VLAN ID */
ULONG     ulIfIndex;            /* 接口索引 */
……
    struct tagL2IF_FDB_ENTRY_S * pHashPrev;  /* 指向哈希链表中的前节点 */
    struct tagL2IF_FDB_ENTRY_S * pHashNext;  /* 指向哈希链表中的后节点 */
    struct tagL2IF_FDB_ENTRY_S * pListPrev;  /* 指向双向链表中的前节点 */
    struct tagL2IF_FDB_ENTRY_S * pListNext;  /* 指向双向链表中的后节点 */
}L2IF_FDB_ENTRY_S;

/* MAC 哈希表节点结构 */
typedef struct tagWVRP_FDB_HASH
{
    WVRP_FDB_HASH_U unPrev; /*上一个Hash表项指针*/
	WVRP_FDB_HASH_U unNext; /*下一个Hash表项指针*/
    ULONG ulNum;                    /* 哈希链上节点个数 */
}WVRP_FDB_HASH_S;

/* MAC空闲链表节点结构 */
typedef struct tagWVRP_FDB_LIST_HEAD
{
    WVRP_FDB_LIST_HEAD_U unPrev; /*上一个表项指针*/
    WVRP_FDB_LIST_HEAD_U unNext; /*下一个表项指针*/
    ULONG ulTotalNum;                   /* 全部MAC表项个数 */
}WVRP_FDB_LIST_HEAD_S;
WVRP_FDB_LIST_HEAD_S  g_stDynMacListHead; /* MAC空闲表项链表 */

/*上行MID表项结构定义*/
typedef struct tagIngressMid
{
    USHORT usSlotBitmap; /*板号掩码*/
}INGRESS_MID_S;
INGRESS_MID_S g_stIngressMID[MID_SIZE] = {0}; /* 上行MID表 */

/*下行MID表项结构定义*/
typedef struct tagEgressMid
{
    MID_ELB_S *pstElb; /*ELB链表头指针*/
}EGRESS_MID_S;
EGRESS_MID_S g_stEgressMID[MID_SIZE] = {0}; /* 下行MID表 */

WPRP_FDB_HASH_S g_astDynMacHashTbl[L2IF_FDB_HASH_SIZE];
L2IF_FDB_ENTRY_S *g_pstDynMacEntryPool = NULL;
WVRP_FDB_LIST_HEAD_S g_stDynMacListHead;
L2IF_FDB_ENTRY_S *g_pstDynMacPoolCurosor = NULL;
ULONG g_ulDynMacRopeCursor = 0;

int main(void)
{
    return 0;
}
